/**
 * Copyright 2020 OPSLI 快速开发平台 https://www.opsli.com
 * <p>
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 * <p>
 * http://www.apache.org/licenses/LICENSE-2.0
 * <p>
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package org.opsli.api.wrapper.customer.customerrelation;

import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.opsli.api.base.warpper.ApiWrapper;
import org.opsli.api.wrapper.customer.customerinfo.CustomersInfoModel;
import org.opsli.api.wrapper.customer.student.CustomersStudentModel;
import org.opsli.common.annotation.validator.ValidatorLenMax;
import org.opsli.plugins.excel.annotation.ExcelInfo;

import java.util.List;

/**
 * 客户关系 Model
 *
 * @author guagua
 * @date 2025-06-29 00:14:23
 */
@Data
@EqualsAndHashCode(callSuper = false)
public class CustomerStudentRelationModel extends ApiWrapper {

    /**
     * 客户关系状态
     */
    @ApiModelProperty(value = "状态")
    Integer status = 1;

    /**
     * 标签
     */
    @ApiModelProperty(value = "标签")
    @ValidatorLenMax(225)
    String tags;
    /**
     * 背景色
     */
    String bgColor;
    /**
     * 客户信息
     */
    CustomersInfoModel customer;

    List<CustomersStudentModel> students;

    /**
     * 客户ID
     */
    @ApiModelProperty(value = "客户ID")
    @ExcelProperty(value = "客户ID", order = 0)
    @ExcelInfo

    @ValidatorLenMax(22)
    private String customerId;

    /**
     * 学员ID
     */
    @ApiModelProperty(value = "学员ID")
    @ExcelProperty(value = "学员ID", order = 1)
    @ExcelInfo
    @ValidatorLenMax(22)
    private String studentId;

    /**
     * 关系
     */
    @ApiModelProperty(value = "关系")
    @ExcelProperty(value = "关系", order = 2)
    @ExcelInfo(dictType = "relation_type")

    @ValidatorLenMax(2)
    private String relationType;

    /**
     * 是否主要联系人(0否 1是)
     */
    @ApiModelProperty(value = "是否主要联系人(0否 1是)")
    @ExcelProperty(value = "是否主要联系人(0否 1是)", order = 3)
    @ExcelInfo(dictType = "yes_no")
    @ValidatorLenMax(1)
    private String isPrimary;

    // ========================================
    // 基础信息字段
    // ========================================

    /**
     * 来源渠道
     */
    @ApiModelProperty(value = "来源渠道")
    @ExcelProperty(value = "来源渠道", order = 4)
    @ExcelInfo(dictType = "source_channel")
    @ValidatorLenMax(20)
    private String sourceChannel;

    /**
     * 关系状态
     */
    @ApiModelProperty(value = "关系状态")
    @ExcelProperty(value = "关系状态", order = 5)
    @ExcelInfo(dictType = "relation_status")
    @ValidatorLenMax(2)
    private String relationStatus;

    /**
     * 建立日期
     */
    @ApiModelProperty(value = "建立日期")
    @ExcelProperty(value = "建立日期", order = 6)
    @ExcelInfo
    @ValidatorLenMax(10)
    private String establishDate;

    /**
     * 优先级
     */
    @ApiModelProperty(value = "优先级")
    @ExcelProperty(value = "优先级", order = 7)
    @ExcelInfo
    @ValidatorLenMax(10)
    private String priority;

    /**
     * 备注说明
     */
    @ApiModelProperty(value = "备注说明")
    @ExcelProperty(value = "备注说明", order = 8)
    @ExcelInfo
    @ValidatorLenMax(500)
    private String remark;

    /**
     * 父级主键集合
     */
    @ApiModelProperty(value = "父级主键集合")
    @ExcelProperty(value = "父级主键集合", order = 9)
    @ExcelInfo
    @ValidatorLenMax(500)
    private String orgIds;

    // ========================================
    // 扩展字段 - 客户信息
    // ========================================

//    /**
//     * 客户姓名
//     */
//    @ApiModelProperty(value = "客户姓名")
//    private String customerName;
//
//    /**
//     * 客户性别
//     */
//    @ApiModelProperty(value = "客户性别")
//    private String customerGender;
//
//    /**
//     * 客户手机号
//     */
//    @ApiModelProperty(value = "客户手机号")
//    private String customerPhone;
//
//    /**
//     * 客户邮箱
//     */
//    @ApiModelProperty(value = "客户邮箱")
//    private String customerEmail;
//
//    /**
//     * 客户身份证
//     */
//    @ApiModelProperty(value = "客户身份证")
//    private String customerIdCard;
//
//    /**
//     * 客户住址
//     */
//    @ApiModelProperty(value = "客户住址")
//    private String customerAddress;
//
//    /**
//     * 客户类型
//     */
//    @ApiModelProperty(value = "客户类型")
//    private String customerType;
//
//    /**
//     * 客户状态
//     */
//    @ApiModelProperty(value = "客户状态")
//    private String customerStatus;
//
//    /**
//     * 客户渠道
//     */
//    @ApiModelProperty(value = "客户渠道")
//    private String customerSourceChannel;
//
//    /**
//     * 客户标签
//     */
//    @ApiModelProperty(value = "客户标签")
//    private String customerTags;
//
//    /**
//     * 客户备注
//     */
//    @ApiModelProperty(value = "客户备注")
//    private String customerRemark;
//
//    // ========================================
//    // 扩展字段 - 学生信息
//    // ========================================
//
//    /**
//     * 学生姓名
//     */
//    @ApiModelProperty(value = "学生姓名")
//    private String studentName;
//
//    /**
//     * 学生性别
//     */
//    @ApiModelProperty(value = "学生性别")
//    private String studentGender;
//
//    /**
//     * 学生出生日期
//     */
//    @ApiModelProperty(value = "学生出生日期")
//    private Date studentBirthDate;
//
//    /**
//     * 学生学校
//     */
//    @ApiModelProperty(value = "学生学校")
//    private String studentSchool;
//
//    /**
//     * 学生年级
//     */
//    @ApiModelProperty(value = "学生年级")
//    private String studentGrade;
//
//    /**
//     * 学生班级
//     */
//    @ApiModelProperty(value = "学生班级")
//    private String studentClassName;
//
//    /**
//     * 学生健康状况
//     */
//    @ApiModelProperty(value = "学生健康状况")
//    private String studentHealthInfo;
//
//    /**
//     * 学生特殊需求
//     */
//    @ApiModelProperty(value = "学生特殊需求")
//    private String studentSpecialNeeds;
//
//    /**
//     * 学生教育类型
//     */
//    @ApiModelProperty(value = "学生教育类型")
//    private String studentEducationType;
//
//    /**
//     * 学生状态
//     */
//    @ApiModelProperty(value = "学生状态")
//    private String studentStatus;

}